﻿#define  _CRT_SECURE_NO_WARNINGS  1
#include <stdio.h>
//int main()
//{
//	int a = 10000;
//	FILE* pf = fopen("test.txt", "wb");
//	fwrite(&a, 4, 1, pf);//⼆进制的形式写到⽂件中
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	//打开文件
//	//FILE* pf = fopen("data.txt", "w");//文件的相对路径:当前文件
//	//FILE* pf = fopen(".\\..\\data.txt", "w");
//	//.---当前目录
//	// ..  ---上一目录
//	// 绝对路径:
//	FILE* pf = fopen("C:\\Users\\wjyailxy\\Desktop", "r");
//	//判断文件是否打开成功
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//打开成功
//	// 写文件
//	
//
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;//如果不将pf置为空指针的话  ，pf就是野指针
//	return 0;
//}

//顺序读写函数介绍
//fputc函数
//int main()
//{
//	//打开文件
//	FILE* pf=fopen("data.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//写文件
//	/* fputc('x', pf);
//	 fputc('y', pf);
//	 fputc('z', pf);*/
//	char c = 0;
//	for (c = 'a'; c <= 'z'; c++)
//	{
//		//fputc(c, pf);
//		fputc(c, stdout);//标准输出流:输出至显示屏界面
//	}
//	 //关闭文件
//	 fclose(pf);
//	 pf = NULL;
//	return 0;
//}

//fgetc
//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	} 
//	int ch = 0;
//	/*while ((ch = fgetc(pf)) != EOF)
//	{
//		printf("%c", ch);
//	}*/
//	while ((ch = fgetc(stdin)) != EOF)
//	{
//		printf("%c", ch);
//	}
//	//读文件
//	//int ch = fgetc(pf);
//	//printf("%c", ch);
//	// ch = fgetc(pf);
//	//printf("%c", ch);
//	// ch = fgetc(pf);
//	//printf("%c", ch);
// //    ch = fgetc(pf);
//	//printf("%c", ch);
//	// ch = fgetc(pf);
//	//printf("%c", ch);
//	// ch = fgetc(pf);
//	//printf("%c", ch);
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//fputs
//int main()
//{
//	FILE* pf = fopen("data.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//写文件
//	//写一行
//	fputs("hello bit\n", pf);
//	fputs("hello world\n", pf);
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//fgets
//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//读文件
//	//读一行
//	/*char arr[10];
//	fgets(arr, 5, pf);
//	printf("%s", arr);*/
//	char arr[100];
//	while (fgets(arr, 100, pf) != NULL)
//	{
//		printf("%s", arr);
//	}
//	/*fgets(arr, 100, pf);
//	printf("%s", arr);
//	fgets(arr, 100, pf);
//	printf("%s", arr);*/
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//fprintf
//int main()
//{
//	int num = 100;
//	float f = 3.14f;
//	char name[20] = "如花";
//	FILE* pf = fopen("data.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//写文件
//	fprintf(pf, "%d %f %s", num, f, name);
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//fscanf
//int main()
//{
//	int num = 0;
//	float f = 0;
//	char name[20] = { 0 };
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//读文件
//	fscanf(pf,"%d %f %s", &num, &f, name);
//	printf("%d %f %s\n", num, f, name);
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	int num = 0;
//	float score = 0;
//	char name[10] = { 0 };
//	fscanf(stdin, "%d %f %s", &num, &score, name);
//	fprintf(stdout, "%d %f %s\n", num, score, name);
//	return 0;
//}

//sprintf ---将格式化的数据转换成字符串
//int main()
//{
//	int num = 100;
//	float score = 3.14f;
//	char name[20] = "如花";
//	char arr[100] = { 0 };
//	sprintf(arr,"%d %f %s", num, score, name);
//	printf("字符串的格式:%s\n", arr);
//	int num1 = 0;
//	float score1 = 0;
//	char name1[10] = { 0 };
//	//sscanf ---从字符串中提取格式化的数据
//	sscanf(arr,"%d %f %s", &num1, &score1, name1);
//	printf("格式化的格式:%d %f %s\n", num1, score1, name1);
//	return 0;
//}

//fwrite---二进制的形式写
//int main()
//{
//	//打开文件
//	FILE* pf = fopen("data.txt", "wb");//二进制的写
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int arr[5] = { 1,2,3,4,5 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	fwrite(arr, sizeof(arr[0]), sz, pf);
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//fread ---是可以读取二进制的信息的
//int main()
//{
//	FILE* pf = fopen("data.txt", "rb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int arr[5] = { 0 };
//	/*fread(arr, sizeof(arr[0]), 5, pf);
//	for (int i = 0; i < 5; i++)
//	{
//		printf("%d ", arr[i]);
//	}*/
//	//一个一个读
//	int i = 0;
//	/*for (i = 0; i < 5; i++)
//	{
//		fread(&arr[i], sizeof(arr[0]), 1, pf);
//	}*/
//	/*for (i = 0; i < 5; i++)
//	{
//		fread(arr+i, sizeof(arr[0]), 1, pf);
//	}*/
//	while (fread(arr + i, sizeof(arr[0]), 1, pf))//读取一个，光标自己往后走
//	{
//		printf("%d ", arr[i]);
//	}
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "rb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int arr[5] = { 0 };
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		fread(arr+i, sizeof(arr[0]), 1, pf);
//	}
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//文件的随机读写
//fseek
//int main()
//{
//	FILE* pf = fopen("data.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	fputc('a', pf);
//	fputc('b', pf);
//	fputc('c', pf);
//	fputc('d', pf);
//	fputc('e', pf);
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int ch=fgetc(pf);
//	printf("%c", ch);
//	fseek(pf, 3, SEEK_CUR);
//	ch = fgetc(pf);
//	printf("%c", ch);
//	fseek(pf, 1, SEEK_SET);
//	ch = fgetc(pf);
//	printf("%c", ch);
//	fseek(pf, -3, SEEK_END);
//	ch = fgetc(pf);
//	printf("%c", ch);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//ftell 返回文件指针相对于起始位置的偏移量
//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int num = fgetc(pf);
//	printf("%c\n", num);
//	num = fgetc(pf);
//	printf("%c\n", num);
//	long int ch=ftell(pf);
//	printf("%ld\n", ch);
//	rewind(pf);
//	num = fgetc(pf);
//	printf("%c\n", num);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}